<template>
    <svg :style="{
        width,
        height,
        '--icon-color': color,
        '--icon-hover-color': hoverColor
    }" class="svg-icon">
        <use :xlink:href="prefix + name" :fill="color"></use>
    </svg>
</template>

<script setup lang="ts">
// 接受父组件传递过来的参数
defineProps({
    // xlink:href属性值的前缀
    prefix: {
        type: String,
        default: '#icon-'
    },
    // 提供使用的图标名字
    name: String,
    // 接收父组件传递的颜色
    color: {
        type: String,
        default: ''
    },
    hoverColor:{
        type: String,
        default: ''
    },
    // 接收父组件传递过来的长度和宽度
    width: {
        type: String,
        default: '16px'
    },
    height: {
        type: String,
        default: '16px'
    }
})
</script>

<style scoped lang="scss">

.svg-icon {
    display: inline-block;
    transition: fill 0.3s ease;

    use {
        fill: var(--icon-color);
        transition: fill 0.3s ease;
    }

    &:hover use {
        fill: var(--icon-hover-color, var(--icon-color));
    }
}
</style>
